// 该文件用于创建 vuex 中最为核心的 store
// 引入 vue
import Vue from 'vue'
// 引入 vuex
import Vuex from 'vuex';


Vue.use(Vuex)
//  准备 actions —— 用于响应组件中的动作
const actions = {
    jia(context, value) {
        console.log('actions中的jia被调用了')
        context.commit('JIA', value)
    }, decrement(context, value) {
        console.log('actions中的decrement被调了')
        context.commit('DECREMENT', value)
    }, jiaOdd(context, value) {
        console.log('actions中的jiaOdd被调了')
        if (context.state.sum % 2) {
            context.commit('JIA', value)
        }
        /*context.commit('JIA_ODD', value)*/
    }, jiaWait(context, value) {
        console.log('actions中的jiaWait被调了')
        setTimeout(() => {
            context.commit('JIA', value)
        }, 500)
    }
}
// 准备 mutations —— 用于操作数据（state）
const mutations = {
    JIA(state, value) {
        console.log('mutations中的JIA被调用了')
        state.sum += value
    },
    DECREMENT(state, value) {
        console.log('mutations中的DECREMENT被调了')
        state.sum -= value
    }, JIA_ODD(state, value) {
        console.log('mutations中的JIA_ODD被调了')
        if (state.sum % 2) {
            state.sum += value
        }
    }, JIA_WAIT(state, value) {
        console.log('mutations中的jia_wait被调了')
        setTimeout(() => {
            state.sum += value
        }, 500)
    },
    ADD_PERSON(state, value) {
        console.log('mutations中的ADD_PERSON被调了')
        state.personList.unshift(value)
    }
}
// 准备 state —— 用于存储数据
const state = {
    // 当前的和
    sum: 0,
    //  名称
    name: '瑞子',
    //  科目
    subject: '车辆网',
    personList: [
        {id: '001', name: '张三'},
        {id: '002', name: '李四'}
    ]
}
// 准备 getters —— 用于将 state 中的数据进行加工
const getters = {
    bigSum(state) {
        console.log('getters中的bigSum被调了', state)
        return state.sum * 10
    }
}
//  创建并暴露 store
export default new Vuex.Store({actions, mutations, state, getters})
